﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace MyFace
{
    class Menu : Estado
    {
        Texture2D Nuvem, MyFace, Bolinhas, Rosto, Olho, OlhoVerde, OlhoPreto, Sobrancelha, OlhoBranco;
        Rectangle RecJogar, RecCreditos, RecSair, RecRanking, RecInstrucoes, RecNuvem;

        Botao Jogar, Creditos, Sair, Ranking, Instrucoes;
        int contadorNuvem;
        Vector2 posOlhoVerde, posOlhoPreto, posOlhoBranco;

        public bool SairJogo = false;
        public bool IrCreditos = false;
        public bool IrInstrucoes = false;
        public bool IrRanking = false;
        public bool IrJogo = false;

        public void Initialize()
        {
            RecJogar = new Rectangle(57, 360, 229, 80);
            RecRanking = new Rectangle(302, 333, 229, 80);
            RecInstrucoes = new Rectangle(112, 470, 229, 80);
            RecCreditos = new Rectangle(348, 430, 229, 80);
            RecNuvem = new Rectangle(150, 60, 0, 0);
            RecSair = new Rectangle(450, 20, 67, 67);
            posOlhoVerde = new Vector2(700, 240);
            posOlhoPreto = new Vector2(715, 255);
            posOlhoBranco = new Vector2(720, 260);
        }

        public void LoadContent(ContentManager Content)
        {
            Jogar = new Botao(@"Vazio", RecJogar,1);
            Jogar.Load(Content);

            Creditos = new Botao(@"Vazio", RecCreditos, 2);
            Creditos.Load(Content);

            Sair = new Botao(@"Menu/Sair", RecSair, 0);
            Sair.Load(Content);

            Ranking = new Botao(@"Vazio", RecRanking, 4);
            Ranking.Load(Content);

            Instrucoes = new Botao(@"Vazio", RecInstrucoes, 5);
            Instrucoes.Load(Content);

            MyFace = Content.Load<Texture2D>(@"Menu\myface");

            Bolinhas = Content.Load<Texture2D>(@"Menu\bolinhas");

            
            Rosto = Content.Load<Texture2D>(@"Menu\Rosto\rosto");
            Olho = Content.Load<Texture2D>(@"Menu\Rosto\parte superior");
            Sobrancelha = Content.Load<Texture2D>(@"Menu\Rosto\sobrancelha");
            OlhoVerde = Content.Load<Texture2D>(@"Menu\Rosto\bolinha verde");
            OlhoPreto = Content.Load<Texture2D>(@"Menu\Rosto\bolinha preta");
            OlhoBranco = Content.Load<Texture2D>(@"Menu\Rosto\bolinha branca");
        }
        public void Update(GameTime gameTime)
        {
            Jogar.Update(gameTime, "Esquerda");
            Sair.Update(gameTime, "Direita");
            Instrucoes.Update(gameTime, "Esquerda");
            Creditos.Update(gameTime, "Cima");
            Ranking.Update(gameTime, "Baixo");

            if (Cursor.mstate.LeftButton == ButtonState.Pressed)
            {
                if (Sair.MouseOver)
                    SairJogo = true;

                if (Jogar.MouseOver)
                    IrJogo = true;

                if (Instrucoes.MouseOver)
                    IrInstrucoes = true;

                if (Ranking.MouseOver)
                    IrRanking = true;

                if (Creditos.MouseOver)
                    IrCreditos = true;
            }
            #region Movimento do Olho (Ainda feinho)
            #region Movimento eixo X
            if (Cursor.mstate.X <= 700)
            {
                if (posOlhoPreto.X > 705)
                    posOlhoPreto.X--;

                if (posOlhoBranco.X > 710)
                    posOlhoBranco.X--;
            }

            if (Cursor.mstate.X <= 730 && Cursor.mstate.X >= 710)
            {
                if (posOlhoPreto.X < 712)
                    posOlhoPreto.X++;
                else
                    posOlhoPreto.X--;

                if (posOlhoBranco.X < 720)
                    posOlhoBranco.X++;
                else
                    posOlhoBranco.X--;
            }

            if(Cursor.mstate.X >= 731)
            {
                if (posOlhoPreto.X < 723)
                    posOlhoPreto.X ++;

                if (posOlhoBranco.X < 734)
                    posOlhoBranco.X++;

            }

            #endregion

            #region Movimento eixo Y
            if (Cursor.mstate.Y <= 100)
            {
                if (posOlhoPreto.Y > 246)
                    posOlhoPreto.Y--;
                if (posOlhoBranco.Y > 249)
                    posOlhoBranco.Y--;

            }
            if (Cursor.mstate.Y <= 250 && Cursor.mstate.Y >= 101)
            {
                if (posOlhoPreto.Y > 251)
                    posOlhoPreto.Y--;
                else 
                    posOlhoPreto.Y++;

                if (posOlhoBranco.Y > 255)
                    posOlhoBranco.Y--;
                else
                    posOlhoBranco.Y++;
            }
            if (Cursor.mstate.Y <= 400 && Cursor.mstate.Y >= 251)
            {
                if (posOlhoPreto.Y > 256)
                    posOlhoPreto.Y--;
                else 
                    posOlhoPreto.Y++;

                if (posOlhoBranco.Y > 263)
                    posOlhoBranco.Y--;
                else
                    posOlhoBranco.Y++;
            }
            if (Cursor.mstate.Y <= 500 && Cursor.mstate.Y >= 401)
            {
                if (posOlhoPreto.Y > 261)
                    posOlhoPreto.Y--;
                else
                    posOlhoPreto.Y++;

                if (posOlhoBranco.Y > 270)
                    posOlhoBranco.Y--;

                else
                    posOlhoBranco.Y++;
            }

            if (Cursor.mstate.Y >= 501)
            {
                if (posOlhoPreto.Y < 266)
                    posOlhoPreto.Y++;

                if (posOlhoBranco.Y < 275)
                    posOlhoBranco.Y++;
            }
            #endregion
            #endregion

            Console.WriteLine(posOlhoPreto.X + "   " + posOlhoPreto.Y);
        }

        public void Draw(GameTime gameTime, SpriteBatch spriteBatch)
        {
            spriteBatch.Draw(MyFace, new Vector2(10, 40), Color.White);

            spriteBatch.Draw(Bolinhas, new Vector2(407, 145), Color.White);

            Instrucoes.Draw(spriteBatch);

            Jogar.Draw(spriteBatch);

            Sair.Draw(spriteBatch);
            
            Creditos.Draw(spriteBatch);
            
            Ranking.Draw(spriteBatch);

            spriteBatch.Draw(Rosto, new Vector2(500, 50), Color.White);
            spriteBatch.Draw(Sobrancelha, new Vector2(680, 210), Color.White);
            spriteBatch.Draw(OlhoVerde, posOlhoVerde, Color.White);
            spriteBatch.Draw(OlhoPreto, posOlhoPreto, Color.White);
            spriteBatch.Draw(OlhoBranco, posOlhoBranco, Color.White);
            spriteBatch.Draw(Olho, new Vector2(680, 235), Color.White);
        }
    }
}
